#!/usr/bin/env node

/**
 * 图标生成脚本 - 图片视频下载器
 * 生成基本的PNG图标文件
 */

const fs = require('fs');
const path = require('path');

// 图标尺寸配置
const iconSizes = [16, 32, 48, 128];

/**
 * 生成简单的PNG图标
 * 注意：这是一个简化的实现，实际项目中建议使用专业设计工具
 */
function generateIcon(size) {
    // 创建一个简单的SVG图标
    const svg = `
<svg width="${size}" height="${size}" viewBox="0 0 ${size} ${size}" xmlns="http://www.w3.org/2000/svg">
    <defs>
        <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="100%">
            <stop offset="0%" style="stop-color:#2196F3;stop-opacity:1" />
            <stop offset="100%" style="stop-color:#1976D2;stop-opacity:1" />
        </linearGradient>
    </defs>
    <rect width="${size}" height="${size}" rx="${size * 0.2}" fill="url(#grad1)"/>
    <circle cx="${size * 0.3}" cy="${size * 0.3}" r="${size * 0.15}" fill="white" opacity="0.3"/>
    <path d="M${size * 0.4} ${size * 0.6} L${size * 0.6} ${size * 0.6} L${size * 0.6} ${size * 0.4} M${size * 0.6} ${size * 0.4} L${size * 0.5} ${size * 0.5} M${size * 0.6} ${size * 0.4} L${size * 0.7} ${size * 0.5}" 
          stroke="white" stroke-width="${Math.max(1, size * 0.05)}" fill="none" stroke-linecap="round"/>
</svg>`;

    // 将SVG转换为PNG（这里使用Base64编码的简单方法）
    // 注意：这是一个占位符实现，实际应该使用Canvas或图像处理库
    const pngData = Buffer.from(svg, 'utf8');

    return pngData;
}

/**
 * 生成所有图标
 */
function generateAllIcons() {
    console.log('🎨 开始生成图标文件...');

    const iconsDir = path.join(__dirname, 'icons');

    // 确保icons目录存在
    if (!fs.existsSync(iconsDir)) {
        fs.mkdirSync(iconsDir, { recursive: true });
    }

    iconSizes.forEach(size => {
        const filename = `icon${size}.png`;
        const filepath = path.join(iconsDir, filename);

        try {
            const iconData = generateIcon(size);
            fs.writeFileSync(filepath, iconData);
            console.log(`✅ 生成图标: ${filename}`);
        } catch (error) {
            console.error(`❌ 生成图标失败: ${filename}`, error.message);
        }
    });

    console.log('🎉 图标生成完成！');
    console.log('💡 注意：这些是占位符图标，建议使用专业设计工具创建更好的图标');
}

/**
 * 创建图标说明文件
 */
function createIconReadme() {
    const readmeContent = `# 图标文件说明

## 当前状态
- 使用自动生成的占位符图标
- 建议替换为专业设计的图标

## 图标规格
- icon16.png - 16x16 像素 (工具栏图标)
- icon32.png - 32x32 像素 (Windows任务栏)
- icon48.png - 48x48 像素 (扩展管理页面)
- icon128.png - 128x128 像素 (Chrome Web Store)

## 设计建议
- 主色调：蓝色 (#2196F3)
- 设计风格：扁平化、简洁
- 主题元素：下载箭头、媒体文件图标

## 生成工具推荐
- Adobe Illustrator
- Figma
- Sketch
- 在线工具：Favicon Generator, Icon Kitchen

## 更新图标
1. 准备PNG格式的图标文件
2. 替换本目录下的对应文件
3. 重新加载Chrome扩展
`;

    const readmePath = path.join(__dirname, 'icons', 'README.md');
    fs.writeFileSync(readmePath, readmeContent);
    console.log('📝 创建图标说明文件');
}

// 主函数
function main() {
    console.log('🎨 图片视频下载器 - 图标生成工具');
    console.log('=====================================');

    generateAllIcons();
    createIconReadme();

    console.log('\n📋 下一步：');
    console.log('1. 检查生成的图标文件');
    console.log('2. 如需更好的图标，请使用专业设计工具');
    console.log('3. 运行 "node build.js build" 重新构建扩展');
    console.log('4. 在Chrome中重新加载扩展');
}

// 运行主函数
if (require.main === module) {
    main();
}

module.exports = {
    generateIcon,
    generateAllIcons,
    createIconReadme
}; 